Multicast technology makes it possible to send data from a single source to many recipients through a data network, without having to set up unicast communication, i.e. one-to-one individual communication between the source and each of the recipients. To that end the source sends data, in data packet form, to a single address associated to a multicast group to which the equipment interested in being recipients of the data sending can subscribe. This address, referred to as a multicast address or also as a multicast group address, is an IP (Internet Protocol) address chosen within a range that is reserved for multicast applications. The data packets which have been sent by the source to the multicast address are then replicated in the different network routers so that they can reach the recipients that have joined the multicast group.
The recipients which receive data in a multicast group are usually equipment connected to the data network by means of a proxy or a router. Hereinafter, the common term host will be used to refer to the recipient equipment. A host can be, for example, a computer or a set-top box (digital signal decoder) connected to a television set.
When a host wants to receive the information sent by one or several sources of a multicast group, it sends to the closest router, or to an intermediate proxy, a subscription message to subscribe to the group so that the router transmits to it the data arriving through the data network and which has been sent by the sources of the multicast group. Likewise, when a host wishes to stop receiving data sending in the multicast group, it sends to the router or to the proxy an unsubscribe message to stop receiving them.
The messages exchanged between a host and the closest router to manage membership to a multicast group use the IGMP protocol (Internet Group Management Protocol) or the MLD (Multicast Listener Discovery) protocol, according to whether or not the router works with version 4 (IPv4) or version 6 (IPv6) of the IP protocol (Internet Protocol), respectively.
When there is a proxy between the host and the router, the proxy also uses the IGMP/MLD protocols to exchange with the host, the closest router or other intermediate proxy, the multicast group membership messages. In these cases, the proxy can receive from different hosts requests to subscribe to or to unsubscribe from a multicast group, and it assembles them to thus reduce IGMP/MLD message traffic it sends to the router.
In addition, routers exchange messages with one another for the purpose of defining the routing which allows efficiently routing the data from the sources to the hosts that have subscribed to a multicast group. To that end, the routers use specific protocols, including the very well known PIM-SM (Protocol Independent Multicast-Sparse Mode).
In summary, the routers receive from the hosts, in the form of IGMP/MLD messages, information specifying which multicast groups they want to receive traffic from, and they communicate with other routers, for example by means of the PIM-SM protocol, for the purpose of setting up a routing which takes the traffic requested by the hosts to such hosts.
All the mentioned protocols are defined and documented by the Internet Engineering Task Force (IETF).
The IGMP protocol version currently being used is IGMPv3, which is described in the RFC 3376 specifications published on line by the IETF (B. Cain et al., Engineering Task Force, Network Working Group, Request for Comments 3376, October 2002; currently available at Internet address http://tools.ietf.org/html/rfc3376).
With regard to the MLD protocol, the version currently being used is MLDv2, which is described in the RFC 3810 specifications published on line by the IETF (R. Vida et al., Engineering Task Force, Network Working Group, Request for Comments 3810, June 2004; currently available at Internet address http://tools.ietf.org/html/rfc3810).
The operation of an IGMP proxy is described in the RFC 4605 specifications published on line by the IETF (B. Fenner et al., Engineering Task Force, Network Working Group, Request for Comments 4605, August 2006; currently available at Internet address http://tools.ietf.org/html/rfc4605).
The PIM-SM protocol used for the communication between routers is described in the RFC 4601 specifications published on line by the IETF (B. Fenner et al., Engineering Task Force, Network Working Group, Request for Comments 4601, August 2006; currently available at Internet address http://tools.ietf.org/html/rfc4601).
Multicast technology was initially implemented primarily to be applied to the many-to-many communication model, known as ASM (Any Source Multicast), in which many users communicate with one another and any of them can send data and also receive data from everyone else. A typical ASM application is multiparty calling via Internet.
Multicast technology was then implemented to be applied to the one-to-many communication model known as SSM (Source Specific Multicast), in which a single source sends data for many recipients. Radio and television via Internet are SSM applications. This is why SSM is currently very interesting.
In earlier IGMP protocol versions, a host could not choose the data sending sources it wanted to subscribe to within a multicast group, rather the host could only subscribe to or unsubscribe from the group for all the sources. The messages a host sent to a router were very simple: Join (G) to receive traffic from the multicast group G and Leave (G) to stop receiving it. Therefore, earlier IGMP protocol versions did not allow SSM.
The possibility that the hosts could choose the sources within a multicast group was introduced in the IGMPv3 version of the IGMP protocol to allow SSM. To that end, a host can send two types of IGMP messages:                An INCLUDE message, consisting of indicating the IP addresses of the sources from which it wishes to receive the data sending. According to the terminology of the RFC 3376 specifications, the IP addresses of the chosen sources are referred to as INCLUDE sources.        An EXCLUDE message, consisting of indicating the IP addresses of the sources from which it does not wish to receive the data sending. In this case, it is interpreted that the host wishes to receive data sent by all the sources except the sources indicated as excluded in the message. According to the terminology of the RFC 3376 specifications, the IP addresses of the excluded sources are referred to as EXCLUDE sources.        
It was decided in the IGMPv3 that each network interface could operate only in one of the following two modes, being able to switch from one to the other: an INCLUDE mode in which the network interface defines an INCLUDE source list, or an EXCLUDE mode in which the network interface defines an EXCLUDE source list.
Hereinafter, and according to common SSM technology nomenclature, the sending of the source S within the multicast group G is referred to as channel (S,G).
In the current state of the art, in order to save memory or to simplify multicast routing protocols, the routers using the IGMP and PIM-SM protocols store only the minimum information of the multicast traffic that they should transmit for each network interface. This minimum information basically consists of storing, for each network interface of the router, information of the state of the multicast channels (S,G) or multicast groups (*,G) for which there is at least one equipment interested in receiving the traffic, along with a timer associated to each channel or multicast group indicating how much time has passed since the router received the last message requesting the multicast traffic.
The presence of switches in data networks, especially in Local Area Networks or LAN, is common. A layer 2 switch is an electronic network interconnection device normally operating in layer 2 (data link layer) of the OSI (Open Systems Interconnection) model. The OSI model is the open systems interconnection reference model created by the ISO (International Organization for Standardization) and is very well known by a person skilled in the art. A switch interconnects two or more network segments, passing data from one segment to another according to the OSI model layer 2 destination address (for example a MAC address in Ethernet networks) of the datagrams reaching the switch. To be able to send the datagrams to the equipment connected to each of its ports, a switch finds out and stores the layer 2 address of each equipment connected to each of its ports.
The operation of a switch according to the prior state of the art when it operates in an Ethernet network is described in further detail below.
The most widely used group of low-level protocols in LAN networks is currently the group of Ethernet protocols defined by the IEEE (Institute of Electrical and Electronics Engineers) specifications. Ethernet defines both the physical layer (layer 1) and the data link layer (layer 2) in the OSI model, and divides the data link layer into two sub-layers: a layer called LLC (Logical Link Control) which is defined in the IEEE 802.2 specifications and a MAC (Media Access Control) layer which is defined in different IEEE 802.3 specifications, such as for example IEEE 802.3u (Fast Ethernet) based on electric cables, or IEEE 802.3z based on fiber optics. There are also wireless Ethernet protocols, such as IEEE 802.11 also known as Wi-Fi, or IEEE 802.16 known as WiMAX.
The same LLC protocol can be used with different MAC layer protocols, resulting from the fact that the IEEE defines new MAC level protocols without modifying the LLC protocol. This is one of the reasons for the success of Ethernet.
One of the functions of the MAC layer is to define the physical addresses of the equipment. Ethernet uses 6-byte physical addresses referred to as MAC addresses (Media Access Control Address).
The IEEE defines three categories of MAC addresses:                Unicast MAC addresses: these are MAC addresses uniquely identifying each network card. The address is usually defined by the hardware of each network card.        Broadcast MAC address: this is the MAC address the 6 bytes of which have the value FFFF.FFFF.FFFF in hexadecimal format. If a data frame is addressed to this address, all the equipment in the network receives the data frame and must process it.        Multicast MAC addresses: these are addresses used to transport multicast data packets. When the IP protocol is used, a multicast MAC address has the form of 0100.5exx.xxxx in the hexadecimal system, where xx.xxxx can be a value between 00.0000 and 7f.ffff.        
Since there are only 23 bits to define a multicast MAC address of a data frame and in contrast the IPv4 protocol uses 28 bits to define a multicast IP address in an IP data packet (the first 4 bits of a multicast IP data packet are always 1110 in binary system), the 28 bits of the multicast IP address of an IP data packet must be transferred to the 23 bits of the multicast MAC address of the corresponding data frame. Therefore, 5 bits of the multicast IP address are lost in this process. The manner of performing this transfer consists of transferring the 23 least significant bits of the multicast IP address to the 23 bits of multicast MAC address. Therefore, a single multicast MAC address corresponds to 32 multicast IP addresses. This is a problem that makes it difficult to manage multicast traffic in the switches of the state of the art.
Another problem in managing multicast traffic in the switches of the state of the art is that when an Ethernet switch connecting routers, or routers and hosts, receives an IP data packet with a multicast group IP address, the switch cannot associate the multicast group IP address with the unicast MAC addresses of the equipment connected to its ports, and therefore the switch does not know through which ports and to which equipment it should send the data packet.
When the switch receives an IP data packet with a multicast group address, since it cannot know through which ports and to which equipment it should send the packet, it sends it through all its ports and to all the equipment connected to the ports. This operation involves an unnecessary bandwidth consumption, given that the switch is sending data packets to equipment that does not need the packets. Furthermore, in some cases this equipment receiving unrequested packets must process them in order to decide what to do with them, which unnecessarily reduces the processing capacity of the equipment for other tasks.
To avoid this problem, a series of techniques to be used in Ethernet switches which transmit multicast traffic between routers or between routers and hosts have been developed.
A solution has been provided by the CGMP (Cisco Group Management Protocol) protocol of the company Cisco Systems Inc, which is described, for example, in Developing IP Multicast Networks—Vol. I, Beau Williamson, Cisco Press, 2000.
The CGMP protocol can only be used in switches which are in the section of the of network comprised between the hosts requesting multicast traffic by means of IGMP messages and the router receiving the IGMP messages. According to this protocol, when the IGMP router receives through a network interface an IGMP message sent by a host, it sends towards the switch, through the same network interface, a data frame containing information of the MAC addresses of the host that sent the IGMP message and the multicast MAC address corresponding with the multicast group of the IGMP message.
The CGMP protocol is virtually not used in the section of the network where IGMP messages circulate because it has several drawbacks. A first drawback is that the router sends to the switch the information of the multicast traffic using layer 2 multicast addresses which, as previously explained, each correspond to 32 layer 3 multicast addresses, and this can cause the switch to transmit 31 unrequested channels associated to a single requested channel. A second drawback is that the CGMP protocol only discriminates traffic at the multicast group level, without taking into account the sources of origin of the traffic within each multicast group. This may also cause the switch to transmit unwanted traffic. Another drawback is that since the CGMP protocol sends the information in layer 2 data frames, it is dependent on the layer 2 format for which it is designed and therefore it does not work with formats other than layer 2 formats or with new layer 2 technologies, such as for example the MPLS (Multi-Protocol Label Switching) technology for example. Another drawback of the CGMP protocol is that it does not use timers. This is a problem because when a host using the IGMPv2 protocol does not send a message to the router to indicate it to stop transmitting multicast traffic that it was receiving, the switch will continue to transmit the multicast traffic to the host to the long as the traffic continues to reach the switch, for example because there are other users connected to the switch receiving the traffic.
Another solution is provided in the RGMP (Router-port Group Management Protocol) protocol defined in the RFC3488 specifications edited online by the IETF (I. Wu et al., Engineering Task Force, Network Working Group, Request for Comments 3844, February 2003; currently available at Internet address http://tools.ietf.org/html/rfc3488). According to this RGMP protocol, each network interface of the router sends messages to the switch in which it informs the switch of which multicast traffic it wishes to receive through the network interface. This solution is also described in patent U.S. Pat. No. 6,847,638. This method has the limitation that it only solves the problem in ports of the switch where there is a router executing this protocol, but it does not solve the problem in ports of the switch where there are only hosts connected. Furthermore, it can only be applied to the port of the switch where a single router is connected and is incompatible with the most widely used technique today referred to as IGMP snooping, explained below, because the RGMP protocol is used to limit the traffic that the switch sends towards the router and the IGMP snooping specifications indicate that all multicast traffic must be sent in the ports of the switch where a router is detected.
Another rather infrequently used solution is defined in the IEEE 802.1 D-2004 specifications, which describe protocols referred to as GARP (Generic Attribute Registration Protocol) and GMRP (GARP Multicast Registration Protocol) mainly characterized by operating at the data link layer or layer 2 of the OSI model. This involves several drawbacks. A first drawback is that the most widely used multicast protocols, such as IGMP and PIM-SM, operate at the network layer or layer 3 of the OSI model and transmit the information in this layer 3, which is not the layer in which the GARP and GMRP protocols operate. A second drawback is that defining multicast traffic at layer 2, i.e. at the layer of physical addresses (MAC address) in the multicast range is worse than defining it at layer 3, since, as previously explained, each layer 2 multicast address corresponds to 32 layer 3 multicast addresses, whereby it may occur that unrequested multicast channels are transmitted.
A common feature of the mentioned solutions based on the CGMP, RGMP and GARP protocols is that they do not allow managing or discriminating SSM multicast traffic because they do not take into account the IP addresses of the data emitting sources.
Due to all these drawbacks, a technique referred to as IGMP snooping has been imposed in the section of the network where IGMP messages circulate, which technique is described below and which does allow the switch to manage SSM multicast traffic and to take into account the IP addresses of the sources of origin of the data.
The RFC 4541 specifications, edited online by the IETF (M. Christensen et al., Engineering Task Force, Network Working Group, Request for Comments 4541, May 2006; currently available at Internet address http://tools.ietf.org/html/rfc4541) describe the operation of a switch performing a function referred to as IGMP snooping so as to prevent sending all the multicast data packets through all its ports and to all the equipment connected to the ports. This IGMP snooping function consists of the switch analyzing the IP data packets containing IGMP messages and creates a table with the information of the multicast channels or groups that the switch must send through each of its ports. The switch thus sends through each of its ports only the multicast channels that the hosts connected to the port have requested. The reason that the switch must perform this snooping function is that, as previously mentioned, a switch is usually a layer 2 equipment in the OSI model and therefore neither knows nor uses layer 3 protocols such as the IP protocol.
This IGMP snooping method described in the RFC 4541 specifications has the limitation that it can only be applied when the equipment connected to a port of the switch is a host. The RFC 4541 specifications indicate that if there is a router connected to a port of the switch, the switch must send all the multicast traffic through the port.
The snooping technique has been imposed in the host to IGMP router section of the network because the IGMP protocol is simple and it is easy for a switch to interpret IGMP messages. The same does not occur in multicast communications between routers, using the PIM-SM protocol for example. In a switch located between two routers, through which the PIM-SM messages pass, the implementation of a PIM snooping function is more difficult due to the fact that the PIM-SM protocol is much more complex than the IGMP protocol: the PIM-SM protocol includes functionalities, such as for example the deletion of JOIN messages, which make it difficult for a switch interpreting PIM-SM messages to perform a snooping function.
One drawback of snooping is that multicast protocols are designed at the network layer or layer 3 and are used to set up communications between routers or between routers and hosts. A router always understands the protocols it uses. If a router receives a message in a protocol that it does not understand, it dismisses the message. Multicast routing protocols, such as IGMP or PIM-SM, are defined to be implemented in routers and their specifications do not include how intermediate layer 2 equipment through which the messages pass, but which does not participate in the message exchange, must interpret messages in the protocols. The recipient equipment of multicast protocol messages, i.e. routers, modifies its state machines depending on the messages that are received and sent. In contrast, switches performing snooping must find out the state of each state machine of the routers by interpreting the messages that the routers exchange with one another. For this reason snooping is difficult to apply in complex protocols such as the PIM-SM protocol, which is the most widely used between routers and the specifications of which define a number of state machines. The PIM-SM protocol is more complex than the IGMP protocol and further includes functions such as the deletion of JOIN messages, making snooping even more difficult, and making it much more difficult for a switch to interpret the PIM-SM messages.
Another problem with snooping is that Internet protocols evolve over the years. Every time a version of a multicast protocol is modified, such as for example the IGMP protocol or the PIM-SM protocol, the switches that apply any of the known solutions do not understand the new messages of the protocol. This has occurred, for example, in switches performing a snooping function with the IGMPv2 protocol that are not able to do this with the IGMPv3 protocol. This is because multicast protocols are designed at the network layer or layer 3 of the OSI model to be implemented in routers, and the specifications of the protocols do not describe how multicast messages are to be interpreted by the layer 2 network equipment located between a router and a host, or between two routers, and through which the messages pass.
In summary, methods based on snooping, such as IGMP snooping or PIM snooping, must interpret the information of the multicast protocol messages. Since the specifications of multicast protocols have not been defined for the protocols to be interpreted by intermediate equipment not involved in the message exchange, the interpretation can involve a complex process depending on the protocol. This process is furthermore behind the times with each new multicast protocol version, whereby the switches performing the snooping become obsolete.